package yl.hs.bmipfull.daos.salemanage;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import yl.hs.bmipfull.daos.BaseDao;
import yl.hs.bmipfull.pojo.salemanage.SaleOrderEntity;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/*
 * ISaleOrderDao
 * @category
 * @author 谢景广
 * @date 2021-06-02
 */
@Repository
public interface ISaleOrderDao extends BaseDao<SaleOrderEntity> {
    /***
     * 根据查询参数获取查询结果统计数量
     * @param query 查询参数
     * @return 查询结果统计数量
     */
    Integer queryCountByQuery(@Param("query") Map<String, Object> query, String[] tags,@Param("filters") List<Map<String,Object>> filters);

    /**
     * 根据查询参数获取查询结果
     *
     * @param query 查询参数
     * @return 查询结果
     */
    List<SaleOrderEntity> queryListByQuery(@Param("query") Map<String, Object> query, String[] tags,@Param("filters") List<Map<String,Object>> filters);

    /**
     * 根据销售订单的编号删除销售订单的信息
     *
     * @param sn
     * @param state
     * @return
     */
    Integer changeToState(String[] sn, short state);

    /**
     * 获取为处理的订单数
     * @param userSn 用户编号
     * @return 数量
     */
    Integer getUntreatedOrder(String userSn);

    /**
     * 获取工地用户关联的销售订单数量
     * @param query 搜索条件
     * @param snList 关联的合同编号
     * @return 销售订单数量
     */
    Integer queryCountByCustom(@Param("query")Map<String, Object> query, @Param("snList")List<String> snList);

    /**
     * 获取工地用户关联的销售订单分页结果
     * @param query 搜索条件
     * @param snList 关联的合同编号
     * @return 销售订单集合
     */
    List<SaleOrderEntity> queryDataByCustom(@Param("query")Map<String, Object> query, @Param("snList")List<String> snList);

    BigDecimal getSalesVolume(String betonSysCode, String timeType);

    BigDecimal getAnnularPeriod(String betonSysCode, String timeType);
    List<SaleOrderEntity> queryByList(@Param("listsn") List<String> listsn);
}
